//package com.ct.redis.util;
//
//import jakarta.annotation.Resource;
//import lombok.extern.slf4j.Slf4j;
//import org.redisson.api.RBlockingDeque;
//import org.redisson.api.RDelayedQueue;
//import org.redisson.api.RedissonClient;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.TimeUnit;
//
//@Component
//@Slf4j
//public class DelayQueueKit {
//
//    // 注入RedissonClient实例
//    @Resource
//    private RedissonClient redissonClient;
//
//    /**
//     * 添加消息到延迟队列
//     *
//     * @param queueCode 队列唯一KEY
//     * @param msg       消息
//     * @param delay     延迟时间
//     * @param timeUnit  时间单位
//     */
//    public <T> void addDelayQueue(String queueCode, T msg, long delay, TimeUnit timeUnit) {
//        RBlockingDeque<T> blockingDeque = redissonClient.getBlockingDeque(queueCode);
//        RDelayedQueue<T> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);
//        // 这一步通过offer插入到队列
//        delayedQueue.offer(msg, delay, timeUnit);
//    }
//
//
//    public <T> void consumeQueueMsg(String queueCode) {
//        RBlockingDeque<T> blockingDeque = redissonClient.getBlockingDeque(queueCode);
//        log.info("【队列-{}】- 监听队列成功", queueCode);
//        while (true) {
//            T message = null;
//            try {
//                message = blockingDeque.take();
//                // 处理自己的业务
//                handleMessage(message);
//                log.info("【队列-{}】- 处理元素成功 - ele = {}", queueCode, message);
//            } catch (Exception e) {
//                log.error("【队列-{}】- 处理元素失败 - ele = {}", queueCode, message, e);
//            }
//        }
//    }
//}